#pragma once
#include <iostream>
#include <string>
#include <list>
#include "pugiconfig.hpp"
#include "pugixml.hpp"


class Catalyst
{
	private:
		pugi::xml_document doc;
		pugi::xml_node naviNode;
	public:
		void LoadXmlFile(std::string path);
		std::list<std::string> GetChildren(std::string level1Node);
		void GoLower(std::string nodeName);
		void GoLower(std::string nodeName, std::string attrName, std::string attrValue);
		void GoHigher();
		void AttrVal(std::string attrName);

		static Catalyst& Instance()
		{
		static Catalyst singleton;
		return singleton;
		}

	// Other non-static member functions
	private:
	  Catalyst() {};                              // Private constructor
	  Catalyst(const Catalyst&);                 // Prevent copy-construction
	  Catalyst& operator=(const Catalyst&);      // Prevent assignment
};